package com.example.itcacp.exception;

/**
 *
 * 全局异常处理
 * */

import com.example.itcacp.dto.response.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 全局异常捕获器：返回统一格式
 */
@ControllerAdvice("com.example.itcacp.controller")
public class GlobalExceptionHandler {
    //日志：输出错误信息
    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);


    //捕获系统异常
    @ExceptionHandler(Exception.class)  //捕获所有异常
    @ResponseBody // 将result对象转换成 json的格式
    public Result error(Exception e) {
        log.error("系统异常", e);
        return Result.error("系统异常");
    }


    //全局捕获抛出的自定义异常
    @ExceptionHandler(CustomerException.class)  //捕获自定义异常
    @ResponseBody // 将result对象转换成 json的格式
    public Result customerError(CustomerException e) {
        log.error("自定义错误", e);
        //后端返回相应的错误信息
        return Result.error(e.getCode(), e.getMsg());
    }
}
